Modern bar code work began in 1948. On Oct. 20, 1949, Woodland and Silver filed a patent application entitled “Classifying Apparatus and Method.” The inventors described their invention as relating “to the art of article classification . . . through the medium of identifying patterns.” Woodland and Silver bar code was a bull's eye symbol, a symbol made up of a series of concentric circles. Woodland and Silver also described a straight-line pattern quite similar to present day one-dimensional bar codes. The symbology was made up of a pattern of four white lines on a dark background. The first line was a datum line and the positions of the remaining three lines were fixed with respect to the first line. The information was coded by the presence or absence of one or more of the lines. This allowed 7 different classifications of articles. However, the inventors noted that if more lines were added, more classifications could be coded. For example, with 10 lines, 1023 classifications could be coded. The Woodland and Silver patent application was issued Oct. 7, 1952 as U.S. Pat. No. 2,612,994, the entire disclosure of which is incorporated by reference herein for all purposes.
Bar codes were not commercialized until 1966. The first commercialized product codes were represented by bull's-eye barcodes, and included a set of concentric circular bars and spaces of varying widths. It was soon recognized that the industry would have to agree on a standard coding scheme open to all equipment manufacturers to use and adopted by all food producers and dealers. In 1969, the NAFC asked Logicon, Inc. to develop a proposal for an industry-wide bar code system. The result was Parts 1 and 2 of the Universal Grocery Products Identification Code (UGPIC) in the summer of 1970. Based on the recommendations of the Logicon report, the U.S. Supermarket Ad Hoc Committee on a Uniform Grocery Product Code was formed. Three years later, the Committee recommended the adoption of the UPC symbol set still used in the USA today.
The first attempt at an industrial application of automatic identification was begun in the late 1950's by the Association of American Railroad. In 1967, the Association adopted an optical bar code. Car labeling and scanner installation began on Oct. 10, 1967. It took seven years before 95% of the fleet was labeled. For many reasons, the system simply did not work and was abandoned in the late 1970's. An important event that really got the bar code into industrial applications occurred Sep. 1, 1981 when the United States Department of Defense adopted the use of Code 39 for marking all products sold to the United States military. This system was called LOGMARS.
A linear bar code is a binary code. The lines and spaces are of varying thicknesses and printed in different combinations. To be scanned, there must be accurate printing and adequate contrast between the bars and spaces. Scanners employ various technologies to read codes. The two most common are lasers and cameras. Scanners may be fixed position, like most supermarket checkout scanners, or hand-held devices, often used for the taking of inventories. There should be (but typically is not) a distinction drawn between the code, which is a structure for the conveyance of data, and the symbol, the machine-readable representation of the code. The code is text, which can be translated into a multiplicity of languages such as English, French, Japanese, or symbol.
Notwithstanding its inauspicious beginning, the bar code has become a remarkable success, a workhorse in many and varied applications. One of the first successful bar codes, Code 39 developed by Dr. David Allais, is widely used in logistical and defense applications. Code 39 is still in use today, although it is less sophisticated than some of the newer bar codes. Code 128 and Interleaved 2 of 5 are other codes that attained some success in niche markets.
The mapping between messages and barcodes is called a symbology. The specification of a symbology includes the encoding of the single digits/characters of the message, as well as, the start and stop markers into bars and spaces, the size of the quiet zone required to be before and after the barcode as well as the computation of a checksum or error correction.
Linear symbologies can be classified generally according to two properties: (1) continuous or discrete and (2) two-width or multiple-width. Characters in continuous symbologies abut, with one character ending with a space and the next beginning with a bar, or vice versa. Characters in discrete symbologies begin and end with bars; the intercharacter space is ignored, as long as it is not wide enough to look like the code ends. Bars and spaces in two-width symbologies are wide or narrow; how wide a wide bar is exactly has no significance as long as the symbology requirements for wide bars are adhered to (usually two to three times more wide than a narrow bar). Bars and spaces in multiple-width symbologies are all multiples of a basic width called the module; most such codes use four widths of 1, 2, 3 and 4 modules. Stacked symbologies consist of a given linear symbology repeated vertically in multiple.
There are various two-dimensional symbologies. The most common are matrix codes, which feature square or dot-shaped modules arranged on a grid pattern. Two-dimensional symbologies also come in a variety of other visual formats. Aside from circular patterns, there are several two-dimensional symbologies which employ steganography by hiding an array of different-sized or shaped modules within a user-specified image such as DataGlyph, for example. Steganography is the art and science of writing hidden messages in such a way that no one apart from the intended recipient knows of the existence of the message; this is in contrast to cryptography, where the existence of the message itself is not disguised, but the content is obscured.
Linear symbologies are optimized to be read by a laser scanner, which sweeps a beam of light across the barcode in a straight line, reading a slice of the barcode light-dark patterns. Stacked symbologies are also optimized for laser scanning, with the laser making multiple passes across the barcode. Laser scanners uses a polygonal mirror or galvanometer-mounted mirror to scan a laser across the barcode, initially only in a straight line, but eventually in complicated patterns so the reader can read barcodes at any angle. Two-dimensional symbologies cannot be read by a laser as there is typically no sweep pattern that can encompass the entire symbol. Accordingly, two-dimensional symbols are typically scanned by a camera capture device.
In the 1990's some barcode reader manufacturers began working with digital cameras to capture barcodes, both linear and two-dimensional. That technology has since been perfected and now often surpasses laser scanners in performance and reliability. More recently, off-the-shelf digital cameras have enough resolution to capture both one-dimensional and two-dimensional barcodes. Increasingly companies are looking to incorporate barcode scanning software into camera phones. However, the camera phone optics are not well suited for standard codes that were designed for industrial dedicated scanners. As a result, new codes are being designed for mobile phones.
Bar codes and particularly two-dimensional symbology codes are designed to hold data. Code users continue to require increased data and the codes holding that data need to provide an increase in the volume of data held in the code. This need drives those who supply these codes to increase data capacity. There are fundamental technical problems that make the increased code data both difficult to create and print and difficult to read and extract the information. Increased levels of data normally requires an increased quantity of symbol cells within the code to hold that data. This increase can be accomplished by creating a code that uses a larger area or by making the symbol cells within the code smaller.
One method of providing increased levels of data normally requires an increased area to hold that data. Most bar/dot codes are printed on a substrate. Some are also read from an LCD or other data monitors such as mobile phone screens. The issues of printing or writing a larger code to the readable media are well known. For example, the media may be small such as a driver's license where no additional area is available for a larger code. Also, the code user typically does not want the media marketing appeal lessened by a large sometime obtrusive code. The physical size of electronic media may not be large enough to hold a larger code. A mobile phone is an example of a small area screen that may not be able to hold a larger code.
Other methods to increase data capacity also have issues in adding symbols by decreasing the size of each symbol's cell. In particular, the printed media may not be capable of accepting the increased resolution required for displaying smaller symbols that are readable. Most printed media has limited DPI (Dots Per Inch) or resolution and smaller symbols may not be formed well enough to be readable. Also, LCD and other electronic media are even more limited in DPI and have a fixed number of pixels to display elements. Smaller codes cells are often hard to correctly image in the reader camera.
The two-dimensional codes are typically read by area array camera devices that have light sensitive elements organized in an array that contains elements in orthogonal X and Y axes or, a drive motor that moves the code under a single row of elements. Reading higher density two-dimensional symbology codes can be challenging. Where you use a larger area code or smaller but more dense symbols, the number of camera elements that fall on any particular cell is less than for a smaller or less dense code. The more elements that image any particular cell, the more likely the cell binary code will be read correctly. The larger code will necessitate filling more of the camera array in order to read the code. As you fill more of the imager and move away from the center of the array the camera lens has more distortion and therefore the image will not be as accurate on the outside edges. As the code has more cells to read the total data being analyzed becomes larger and takes more time based on the increased number of elements that will be analyzed.
One commonly used area array camera has an array of 640×480 (307,200) elements and typically can be used to read a code with up to 800 bytes of data. The code of choice for high data content is the currently commercially available two-dimensional VSCode™ symbology by Veritec Inc. VSCode™ symbols of 1200 byte capacity generally do not read as well as other lower data codes using a camera with the above noted characteristics. A 1.3 mega-element camera can be used for the 1200 byte code but increased work load/read time from using quadruple the elements, a more costly camera and less image stability all contribute to challenges in reading larger codes. The large data two-dimensional codes are reaching the practical maximum data capacity for current technology when cost, complexity and read speed are also considered. Moreover, a code two-dimensional code is still limited by the fact that each cell within a symbology is limited by the binary function of having only black and white cells that provides only 2 bits of data per cell.